/*******************************************************
> Copyright (C) 2024 ==IOT== All rights reserved.
> File Name: drinks.cpp
> Author: IOT
> Website:www.slq.org
> Created Time: 2024年10月18日 星期五 09时46分47秒
***************************************************/

#include <iostream>
#include <iomanip>
using namespace std;
#if 0
struct Drinks {
	string brand; // 品牌
	float price;  // 价格
	int amount;	  // 数量
	void set_price(Drinks &dk, float price)
	{
		if (price > 0)
			dk.price = price;	
	}
};
#endif

// 定义drinks类
class Drinks { // 本质还是类型
private: // 通过私有属性保护成员变量
	string brand; // 品牌
	float price;  // 价格
	int amount;	  // 数量
	
public: // 公有
	// 特殊接口
	Drinks() // 成员构造函数(默认构造)
	{
		//cout << "consturctor" << endl;
		brand = "";
		price = 0.0;
		amount = 0;
	}
	
	Drinks(const string &_brand, float _price, int _amount)
	{
		brand = _brand;
		price= _price;
		amount = _amount;
	}
	
	~Drinks()
	{
		cout << "deconstructor" << endl;
	}
	void set_brand(const string &_brand)
	{
		brand = _brand;
	}
	string get_brand()
	{
		return brand;
	}
	void set_price(float _price) // 成员函数
	{
		if (_price > 0)
			price = _price;	 // 类内可以访问私有的成员变量
	}
	float get_price(); // 成员函数可以在类内声明
};
/*
函数功能：
*/
float Drinks::get_price() // 类外定义，::域作用运算符，说明该函数属于哪一个类
{
	return price;
}

int main(int argc,const char* argv[])
{
	//Drinks cola = {"可乐", 5.0, 10};	//实例化对象
	Drinks cola("可乐", 5.0, 10);
	
	cout.precision(6);
	cout.setf(ios::fixed,ios::floatfield);
	//cout.fill('0');
	cout << "price:" << cola.get_price() << endl;
	//cola.amount = 20; // 类外不可以访问私有的成员变量
	
	cola.set_price(10.0);
	cout << "price:" << cola.get_price() << endl;
	//cout << cola.brand << " " << cola.price << " " << cola.amount << endl;
	
	Drinks box[5]; 				//通过类实例对象数组
	box[0].set_brand("可乐");
	box[1].set_brand("雪碧");
	
	Drinks *pdrink = NULL; // 实例化对象指针
	pdrink = &cola;
	cout << "cola price:" << pdrink->get_price() << endl;
	
	pdrink = box;
	cout << pdrink[0].get_brand() << endl;
	cout << (pdrink + 1) -> get_brand() << endl;
	
	// 实例化对象引用
	Drinks &rcola = cola;
	cout << "price:" << rcola.get_price() << endl;
	
    return 0;
}

/*
函数功能：从数组中查找出价格最高的饮料品牌
*/

string find_max_price(Drinks *pdrk, int n)
{
	
}

